
_Soft_UART_Write_Text:

;tricopter.c,16 :: 		void Soft_UART_Write_Text(char* testo) {
;tricopter.c,18 :: 		for (cnt=0; cnt<strlen(testo); cnt++) {
	CLRF        Soft_UART_Write_Text_cnt_L0+0 
L_Soft_UART_Write_Text0:
	MOVF        FARG_Soft_UART_Write_Text_testo+0, 0 
	MOVWF       FARG_strlen_s+0 
	MOVF        FARG_Soft_UART_Write_Text_testo+1, 0 
	MOVWF       FARG_strlen_s+1 
	CALL        _strlen+0, 0
	MOVLW       128
	MOVWF       R2 
	MOVLW       128
	XORWF       R1, 0 
	SUBWF       R2, 0 
	BTFSS       STATUS+0, 2 
	GOTO        L__Soft_UART_Write_Text21
	MOVF        R0, 0 
	SUBWF       Soft_UART_Write_Text_cnt_L0+0, 0 
L__Soft_UART_Write_Text21:
	BTFSC       STATUS+0, 0 
	GOTO        L_Soft_UART_Write_Text1
;tricopter.c,19 :: 		Soft_UART_Write(testo[cnt]);
	MOVF        Soft_UART_Write_Text_cnt_L0+0, 0 
	ADDWF       FARG_Soft_UART_Write_Text_testo+0, 0 
	MOVWF       FSR0L 
	MOVLW       0
	ADDWFC      FARG_Soft_UART_Write_Text_testo+1, 0 
	MOVWF       FSR0H 
	MOVF        POSTINC0+0, 0 
	MOVWF       FARG_Soft_UART_Write_udata+0 
	CALL        _Soft_UART_Write+0, 0
;tricopter.c,18 :: 		for (cnt=0; cnt<strlen(testo); cnt++) {
	INCF        Soft_UART_Write_Text_cnt_L0+0, 1 
;tricopter.c,20 :: 		}
	GOTO        L_Soft_UART_Write_Text0
L_Soft_UART_Write_Text1:
;tricopter.c,21 :: 		}
	RETURN      0
; end of _Soft_UART_Write_Text

_ADXL345_Wr:

;tricopter.c,25 :: 		void ADXL345_Wr(unsigned short address, unsigned short in) {
;tricopter.c,26 :: 		I2C1_Start();
	CALL        _I2C1_Start+0, 0
;tricopter.c,27 :: 		I2C1_Wr(0x3A);      // Write mode
	MOVLW       58
	MOVWF       FARG_I2C1_Wr_data_+0 
	CALL        _I2C1_Wr+0, 0
;tricopter.c,28 :: 		I2C1_Wr(address);
	MOVF        FARG_ADXL345_Wr_address+0, 0 
	MOVWF       FARG_I2C1_Wr_data_+0 
	CALL        _I2C1_Wr+0, 0
;tricopter.c,29 :: 		I2C1_Wr(in);
	MOVF        FARG_ADXL345_Wr_in+0, 0 
	MOVWF       FARG_I2C1_Wr_data_+0 
	CALL        _I2C1_Wr+0, 0
;tricopter.c,30 :: 		I2C1_Stop();
	CALL        _I2C1_Stop+0, 0
;tricopter.c,31 :: 		}
	RETURN      0
; end of _ADXL345_Wr

_ADXL345_Rd:

;tricopter.c,35 :: 		unsigned short ADXL345_Rd(unsigned short address) {
;tricopter.c,37 :: 		I2C1_Start();
	CALL        _I2C1_Start+0, 0
;tricopter.c,38 :: 		I2C1_Wr(0x3A);      // Write mode
	MOVLW       58
	MOVWF       FARG_I2C1_Wr_data_+0 
	CALL        _I2C1_Wr+0, 0
;tricopter.c,39 :: 		I2C1_Wr(address);
	MOVF        FARG_ADXL345_Rd_address+0, 0 
	MOVWF       FARG_I2C1_Wr_data_+0 
	CALL        _I2C1_Wr+0, 0
;tricopter.c,40 :: 		I2C1_Stop();
	CALL        _I2C1_Stop+0, 0
;tricopter.c,41 :: 		I2C1_Start();
	CALL        _I2C1_Start+0, 0
;tricopter.c,42 :: 		I2C1_Wr(0x3B);      // Read Mode
	MOVLW       59
	MOVWF       FARG_I2C1_Wr_data_+0 
	CALL        _I2C1_Wr+0, 0
;tricopter.c,43 :: 		out = I2C1_Rd(0);
	CLRF        FARG_I2C1_Rd_ack+0 
	CALL        _I2C1_Rd+0, 0
	MOVF        R0, 0 
	MOVWF       ADXL345_Rd_out_L0+0 
;tricopter.c,44 :: 		I2C1_Stop();
	CALL        _I2C1_Stop+0, 0
;tricopter.c,45 :: 		return out;
	MOVF        ADXL345_Rd_out_L0+0, 0 
	MOVWF       R0 
;tricopter.c,46 :: 		}
	RETURN      0
; end of _ADXL345_Rd

_ADXL345_getAcc:

;tricopter.c,52 :: 		void ADXL345_getAcc(int *acc) {
;tricopter.c,57 :: 		I2C1_Start();
	CALL        _I2C1_Start+0, 0
;tricopter.c,58 :: 		I2C1_Wr(0x3A);      // Write mode
	MOVLW       58
	MOVWF       FARG_I2C1_Wr_data_+0 
	CALL        _I2C1_Wr+0, 0
;tricopter.c,59 :: 		I2C1_Wr(0x32);
	MOVLW       50
	MOVWF       FARG_I2C1_Wr_data_+0 
	CALL        _I2C1_Wr+0, 0
;tricopter.c,60 :: 		I2C1_Stop();
	CALL        _I2C1_Stop+0, 0
;tricopter.c,61 :: 		I2C1_Start();
	CALL        _I2C1_Start+0, 0
;tricopter.c,62 :: 		I2C1_Wr(0x3B);      // Read Mode
	MOVLW       59
	MOVWF       FARG_I2C1_Wr_data_+0 
	CALL        _I2C1_Wr+0, 0
;tricopter.c,63 :: 		for (cnt=0; cnt<6; cnt++) {
	CLRF        ADXL345_getAcc_cnt_L0+0 
L_ADXL345_getAcc3:
	MOVLW       6
	SUBWF       ADXL345_getAcc_cnt_L0+0, 0 
	BTFSC       STATUS+0, 0 
	GOTO        L_ADXL345_getAcc4
;tricopter.c,65 :: 		ack = (cnt<5);
	MOVLW       5
	SUBWF       ADXL345_getAcc_cnt_L0+0, 0 
	MOVLW       1
	BTFSC       STATUS+0, 0 
	MOVLW       0
	MOVWF       FARG_I2C1_Rd_ack+0 
;tricopter.c,66 :: 		acc_tmp[cnt] = I2C1_Rd(ack);
	MOVLW       ADXL345_getAcc_acc_tmp_L0+0
	MOVWF       FLOC__ADXL345_getAcc+0 
	MOVLW       hi_addr(ADXL345_getAcc_acc_tmp_L0+0)
	MOVWF       FLOC__ADXL345_getAcc+1 
	MOVF        ADXL345_getAcc_cnt_L0+0, 0 
	ADDWF       FLOC__ADXL345_getAcc+0, 1 
	BTFSC       STATUS+0, 0 
	INCF        FLOC__ADXL345_getAcc+1, 1 
	CALL        _I2C1_Rd+0, 0
	MOVFF       FLOC__ADXL345_getAcc+0, FSR1L
	MOVFF       FLOC__ADXL345_getAcc+1, FSR1H
	MOVF        R0, 0 
	MOVWF       POSTINC1+0 
;tricopter.c,63 :: 		for (cnt=0; cnt<6; cnt++) {
	INCF        ADXL345_getAcc_cnt_L0+0, 1 
;tricopter.c,67 :: 		}
	GOTO        L_ADXL345_getAcc3
L_ADXL345_getAcc4:
;tricopter.c,68 :: 		I2C1_Stop();
	CALL        _I2C1_Stop+0, 0
;tricopter.c,70 :: 		acc[0] = acc_tmp[1];
	MOVFF       FARG_ADXL345_getAcc_acc+0, FSR1L
	MOVFF       FARG_ADXL345_getAcc_acc+1, FSR1H
	MOVF        ADXL345_getAcc_acc_tmp_L0+1, 0 
	MOVWF       POSTINC1+0 
	MOVLW       0
	MOVWF       POSTINC1+0 
;tricopter.c,71 :: 		acc[0] = acc[0] << 8;
	MOVFF       FARG_ADXL345_getAcc_acc+0, FSR0L
	MOVFF       FARG_ADXL345_getAcc_acc+1, FSR0H
	MOVF        POSTINC0+0, 0 
	MOVWF       R3 
	MOVF        POSTINC0+0, 0 
	MOVWF       R4 
	MOVF        R3, 0 
	MOVWF       R1 
	CLRF        R0 
	MOVFF       FARG_ADXL345_getAcc_acc+0, FSR1L
	MOVFF       FARG_ADXL345_getAcc_acc+1, FSR1H
	MOVF        R0, 0 
	MOVWF       POSTINC1+0 
	MOVF        R1, 0 
	MOVWF       POSTINC1+0 
;tricopter.c,72 :: 		acc[0] |= acc_tmp[0];
	MOVFF       FARG_ADXL345_getAcc_acc+0, FSR0L
	MOVFF       FARG_ADXL345_getAcc_acc+1, FSR0H
	MOVF        POSTINC0+0, 0 
	MOVWF       R0 
	MOVF        POSTINC0+0, 0 
	MOVWF       R1 
	MOVF        ADXL345_getAcc_acc_tmp_L0+0, 0 
	IORWF       R0, 1 
	MOVLW       0
	IORWF       R1, 1 
	MOVFF       FARG_ADXL345_getAcc_acc+0, FSR1L
	MOVFF       FARG_ADXL345_getAcc_acc+1, FSR1H
	MOVF        R0, 0 
	MOVWF       POSTINC1+0 
	MOVF        R1, 0 
	MOVWF       POSTINC1+0 
;tricopter.c,73 :: 		acc[1] = acc_tmp[3];
	MOVLW       2
	ADDWF       FARG_ADXL345_getAcc_acc+0, 0 
	MOVWF       FSR1L 
	MOVLW       0
	ADDWFC      FARG_ADXL345_getAcc_acc+1, 0 
	MOVWF       FSR1H 
	MOVF        ADXL345_getAcc_acc_tmp_L0+3, 0 
	MOVWF       POSTINC1+0 
	MOVLW       0
	MOVWF       POSTINC1+0 
;tricopter.c,74 :: 		acc[1] = acc[1] << 8;
	MOVLW       2
	ADDWF       FARG_ADXL345_getAcc_acc+0, 0 
	MOVWF       FSR1L 
	MOVLW       0
	ADDWFC      FARG_ADXL345_getAcc_acc+1, 0 
	MOVWF       FSR1H 
	MOVLW       2
	ADDWF       FARG_ADXL345_getAcc_acc+0, 0 
	MOVWF       FSR0L 
	MOVLW       0
	ADDWFC      FARG_ADXL345_getAcc_acc+1, 0 
	MOVWF       FSR0H 
	MOVF        POSTINC0+0, 0 
	MOVWF       R3 
	MOVF        POSTINC0+0, 0 
	MOVWF       R4 
	MOVF        R3, 0 
	MOVWF       R1 
	CLRF        R0 
	MOVF        R0, 0 
	MOVWF       POSTINC1+0 
	MOVF        R1, 0 
	MOVWF       POSTINC1+0 
;tricopter.c,75 :: 		acc[1] |= acc_tmp[2];
	MOVLW       2
	ADDWF       FARG_ADXL345_getAcc_acc+0, 0 
	MOVWF       R2 
	MOVLW       0
	ADDWFC      FARG_ADXL345_getAcc_acc+1, 0 
	MOVWF       R3 
	MOVFF       R2, FSR0L
	MOVFF       R3, FSR0H
	MOVF        POSTINC0+0, 0 
	MOVWF       R0 
	MOVF        POSTINC0+0, 0 
	MOVWF       R1 
	MOVF        ADXL345_getAcc_acc_tmp_L0+2, 0 
	IORWF       R0, 1 
	MOVLW       0
	IORWF       R1, 1 
	MOVFF       R2, FSR1L
	MOVFF       R3, FSR1H
	MOVF        R0, 0 
	MOVWF       POSTINC1+0 
	MOVF        R1, 0 
	MOVWF       POSTINC1+0 
;tricopter.c,76 :: 		acc[2] = acc_tmp[5];
	MOVLW       4
	ADDWF       FARG_ADXL345_getAcc_acc+0, 0 
	MOVWF       FSR1L 
	MOVLW       0
	ADDWFC      FARG_ADXL345_getAcc_acc+1, 0 
	MOVWF       FSR1H 
	MOVF        ADXL345_getAcc_acc_tmp_L0+5, 0 
	MOVWF       POSTINC1+0 
	MOVLW       0
	MOVWF       POSTINC1+0 
;tricopter.c,77 :: 		acc[2] = acc[2] << 8;
	MOVLW       4
	ADDWF       FARG_ADXL345_getAcc_acc+0, 0 
	MOVWF       FSR1L 
	MOVLW       0
	ADDWFC      FARG_ADXL345_getAcc_acc+1, 0 
	MOVWF       FSR1H 
	MOVLW       4
	ADDWF       FARG_ADXL345_getAcc_acc+0, 0 
	MOVWF       FSR0L 
	MOVLW       0
	ADDWFC      FARG_ADXL345_getAcc_acc+1, 0 
	MOVWF       FSR0H 
	MOVF        POSTINC0+0, 0 
	MOVWF       R3 
	MOVF        POSTINC0+0, 0 
	MOVWF       R4 
	MOVF        R3, 0 
	MOVWF       R1 
	CLRF        R0 
	MOVF        R0, 0 
	MOVWF       POSTINC1+0 
	MOVF        R1, 0 
	MOVWF       POSTINC1+0 
;tricopter.c,78 :: 		acc[2] |= acc_tmp[4];
	MOVLW       4
	ADDWF       FARG_ADXL345_getAcc_acc+0, 0 
	MOVWF       R2 
	MOVLW       0
	ADDWFC      FARG_ADXL345_getAcc_acc+1, 0 
	MOVWF       R3 
	MOVFF       R2, FSR0L
	MOVFF       R3, FSR0H
	MOVF        POSTINC0+0, 0 
	MOVWF       R0 
	MOVF        POSTINC0+0, 0 
	MOVWF       R1 
	MOVF        ADXL345_getAcc_acc_tmp_L0+4, 0 
	IORWF       R0, 1 
	MOVLW       0
	IORWF       R1, 1 
	MOVFF       R2, FSR1L
	MOVFF       R3, FSR1H
	MOVF        R0, 0 
	MOVWF       POSTINC1+0 
	MOVF        R1, 0 
	MOVWF       POSTINC1+0 
;tricopter.c,79 :: 		}
	RETURN      0
; end of _ADXL345_getAcc

_dataArrayInit:

;tricopter.c,83 :: 		void dataArrayInit(int *fifox, int *fifoy, int *fifoz) {
;tricopter.c,86 :: 		for (cnt=0; cnt<TABLE_DIM; cnt++) {
	CLRF        dataArrayInit_cnt_L0+0 
L_dataArrayInit6:
	MOVLW       16
	SUBWF       dataArrayInit_cnt_L0+0, 0 
	BTFSC       STATUS+0, 0 
	GOTO        L_dataArrayInit7
;tricopter.c,87 :: 		ADXL345_getAcc(&acc_tmp);
	MOVLW       dataArrayInit_acc_tmp_L0+0
	MOVWF       FARG_ADXL345_getAcc_acc+0 
	MOVLW       hi_addr(dataArrayInit_acc_tmp_L0+0)
	MOVWF       FARG_ADXL345_getAcc_acc+1 
	CALL        _ADXL345_getAcc+0, 0
;tricopter.c,88 :: 		fifox[cnt] = acc_tmp[0];
	MOVF        dataArrayInit_cnt_L0+0, 0 
	MOVWF       R0 
	MOVLW       0
	MOVWF       R1 
	RLCF        R0, 1 
	BCF         R0, 0 
	RLCF        R1, 1 
	MOVF        R0, 0 
	ADDWF       FARG_dataArrayInit_fifox+0, 0 
	MOVWF       FSR1L 
	MOVF        R1, 0 
	ADDWFC      FARG_dataArrayInit_fifox+1, 0 
	MOVWF       FSR1H 
	MOVF        dataArrayInit_acc_tmp_L0+0, 0 
	MOVWF       POSTINC1+0 
	MOVF        dataArrayInit_acc_tmp_L0+1, 0 
	MOVWF       POSTINC1+0 
;tricopter.c,89 :: 		fifoy[cnt] = acc_tmp[1];
	MOVF        dataArrayInit_cnt_L0+0, 0 
	MOVWF       R0 
	MOVLW       0
	MOVWF       R1 
	RLCF        R0, 1 
	BCF         R0, 0 
	RLCF        R1, 1 
	MOVF        R0, 0 
	ADDWF       FARG_dataArrayInit_fifoy+0, 0 
	MOVWF       FSR1L 
	MOVF        R1, 0 
	ADDWFC      FARG_dataArrayInit_fifoy+1, 0 
	MOVWF       FSR1H 
	MOVF        dataArrayInit_acc_tmp_L0+2, 0 
	MOVWF       POSTINC1+0 
	MOVF        dataArrayInit_acc_tmp_L0+3, 0 
	MOVWF       POSTINC1+0 
;tricopter.c,90 :: 		fifoz[cnt] = acc_tmp[2];
	MOVF        dataArrayInit_cnt_L0+0, 0 
	MOVWF       R0 
	MOVLW       0
	MOVWF       R1 
	RLCF        R0, 1 
	BCF         R0, 0 
	RLCF        R1, 1 
	MOVF        R0, 0 
	ADDWF       FARG_dataArrayInit_fifoz+0, 0 
	MOVWF       FSR1L 
	MOVF        R1, 0 
	ADDWFC      FARG_dataArrayInit_fifoz+1, 0 
	MOVWF       FSR1H 
	MOVF        dataArrayInit_acc_tmp_L0+4, 0 
	MOVWF       POSTINC1+0 
	MOVF        dataArrayInit_acc_tmp_L0+5, 0 
	MOVWF       POSTINC1+0 
;tricopter.c,86 :: 		for (cnt=0; cnt<TABLE_DIM; cnt++) {
	INCF        dataArrayInit_cnt_L0+0, 1 
;tricopter.c,91 :: 		}
	GOTO        L_dataArrayInit6
L_dataArrayInit7:
;tricopter.c,92 :: 		}
	RETURN      0
; end of _dataArrayInit

_dataArrayUpdate:

;tricopter.c,96 :: 		void dataArrayUpdate(int *fifox, int *fifoy, int *fifoz) {
;tricopter.c,99 :: 		if (table_pointer < 0 || table_pointer >= TABLE_DIM) table_pointer = 0;
	MOVLW       0
	SUBWF       dataArrayUpdate_table_pointer_L0+0, 0 
	BTFSS       STATUS+0, 0 
	GOTO        L__dataArrayUpdate20
	MOVLW       16
	SUBWF       dataArrayUpdate_table_pointer_L0+0, 0 
	BTFSC       STATUS+0, 0 
	GOTO        L__dataArrayUpdate20
	GOTO        L_dataArrayUpdate11
L__dataArrayUpdate20:
	CLRF        dataArrayUpdate_table_pointer_L0+0 
L_dataArrayUpdate11:
;tricopter.c,100 :: 		ADXL345_getAcc(&acc_tmp);
	MOVLW       dataArrayUpdate_acc_tmp_L0+0
	MOVWF       FARG_ADXL345_getAcc_acc+0 
	MOVLW       hi_addr(dataArrayUpdate_acc_tmp_L0+0)
	MOVWF       FARG_ADXL345_getAcc_acc+1 
	CALL        _ADXL345_getAcc+0, 0
;tricopter.c,101 :: 		fifox[table_pointer] = acc_tmp[0];
	MOVF        dataArrayUpdate_table_pointer_L0+0, 0 
	MOVWF       R0 
	MOVLW       0
	MOVWF       R1 
	RLCF        R0, 1 
	BCF         R0, 0 
	RLCF        R1, 1 
	MOVF        R0, 0 
	ADDWF       FARG_dataArrayUpdate_fifox+0, 0 
	MOVWF       FSR1L 
	MOVF        R1, 0 
	ADDWFC      FARG_dataArrayUpdate_fifox+1, 0 
	MOVWF       FSR1H 
	MOVF        dataArrayUpdate_acc_tmp_L0+0, 0 
	MOVWF       POSTINC1+0 
	MOVF        dataArrayUpdate_acc_tmp_L0+1, 0 
	MOVWF       POSTINC1+0 
;tricopter.c,102 :: 		fifoy[table_pointer] = acc_tmp[1];
	MOVF        dataArrayUpdate_table_pointer_L0+0, 0 
	MOVWF       R0 
	MOVLW       0
	MOVWF       R1 
	RLCF        R0, 1 
	BCF         R0, 0 
	RLCF        R1, 1 
	MOVF        R0, 0 
	ADDWF       FARG_dataArrayUpdate_fifoy+0, 0 
	MOVWF       FSR1L 
	MOVF        R1, 0 
	ADDWFC      FARG_dataArrayUpdate_fifoy+1, 0 
	MOVWF       FSR1H 
	MOVF        dataArrayUpdate_acc_tmp_L0+2, 0 
	MOVWF       POSTINC1+0 
	MOVF        dataArrayUpdate_acc_tmp_L0+3, 0 
	MOVWF       POSTINC1+0 
;tricopter.c,103 :: 		fifoz[table_pointer] = acc_tmp[2];
	MOVF        dataArrayUpdate_table_pointer_L0+0, 0 
	MOVWF       R0 
	MOVLW       0
	MOVWF       R1 
	RLCF        R0, 1 
	BCF         R0, 0 
	RLCF        R1, 1 
	MOVF        R0, 0 
	ADDWF       FARG_dataArrayUpdate_fifoz+0, 0 
	MOVWF       FSR1L 
	MOVF        R1, 0 
	ADDWFC      FARG_dataArrayUpdate_fifoz+1, 0 
	MOVWF       FSR1H 
	MOVF        dataArrayUpdate_acc_tmp_L0+4, 0 
	MOVWF       POSTINC1+0 
	MOVF        dataArrayUpdate_acc_tmp_L0+5, 0 
	MOVWF       POSTINC1+0 
;tricopter.c,104 :: 		table_pointer++;
	INCF        dataArrayUpdate_table_pointer_L0+0, 1 
;tricopter.c,105 :: 		}
	RETURN      0
; end of _dataArrayUpdate

_dataArrayFilter:

;tricopter.c,109 :: 		int dataArrayFilter(int *fifo) {
;tricopter.c,111 :: 		long value = 0;
	CLRF        dataArrayFilter_value_L0+0 
	CLRF        dataArrayFilter_value_L0+1 
	CLRF        dataArrayFilter_value_L0+2 
	CLRF        dataArrayFilter_value_L0+3 
;tricopter.c,112 :: 		for (cnt=0; cnt<TABLE_DIM; cnt++) {
	CLRF        R5 
L_dataArrayFilter12:
	MOVLW       16
	SUBWF       R5, 0 
	BTFSC       STATUS+0, 0 
	GOTO        L_dataArrayFilter13
;tricopter.c,113 :: 		value += fifo[cnt];
	MOVF        R5, 0 
	MOVWF       R0 
	MOVLW       0
	MOVWF       R1 
	RLCF        R0, 1 
	BCF         R0, 0 
	RLCF        R1, 1 
	MOVF        R0, 0 
	ADDWF       FARG_dataArrayFilter_fifo+0, 0 
	MOVWF       FSR2L 
	MOVF        R1, 0 
	ADDWFC      FARG_dataArrayFilter_fifo+1, 0 
	MOVWF       FSR2H 
	MOVF        POSTINC2+0, 0 
	MOVWF       R0 
	MOVF        POSTINC2+0, 0 
	MOVWF       R1 
	MOVF        R0, 0 
	ADDWF       dataArrayFilter_value_L0+0, 1 
	MOVF        R1, 0 
	ADDWFC      dataArrayFilter_value_L0+1, 1 
	MOVLW       0
	BTFSC       R1, 7 
	MOVLW       255
	ADDWFC      dataArrayFilter_value_L0+2, 1 
	ADDWFC      dataArrayFilter_value_L0+3, 1 
;tricopter.c,112 :: 		for (cnt=0; cnt<TABLE_DIM; cnt++) {
	INCF        R5, 1 
;tricopter.c,114 :: 		}
	GOTO        L_dataArrayFilter12
L_dataArrayFilter13:
;tricopter.c,115 :: 		return (int)(value/TABLE_DIM);
	MOVLW       4
	MOVWF       R4 
	MOVF        dataArrayFilter_value_L0+0, 0 
	MOVWF       R0 
	MOVF        dataArrayFilter_value_L0+1, 0 
	MOVWF       R1 
	MOVF        dataArrayFilter_value_L0+2, 0 
	MOVWF       R2 
	MOVF        dataArrayFilter_value_L0+3, 0 
	MOVWF       R3 
	MOVF        R4, 0 
L__dataArrayFilter22:
	BZ          L__dataArrayFilter23
	RRCF        R3, 1 
	RRCF        R2, 1 
	RRCF        R1, 1 
	RRCF        R0, 1 
	BCF         R3, 7 
	BTFSC       R3, 6 
	BSF         R3, 7 
	ADDLW       255
	GOTO        L__dataArrayFilter22
L__dataArrayFilter23:
;tricopter.c,116 :: 		}
	RETURN      0
; end of _dataArrayFilter

_main:

;tricopter.c,119 :: 		void main() {
;tricopter.c,130 :: 		LED_DIR = 0;      // LED is set as OUTPUT
	BCF         TRISC+0, 2 
;tricopter.c,132 :: 		ADCON1 = 0x0F;    // Set A/D Disabled
	MOVLW       15
	MOVWF       ADCON1+0 
;tricopter.c,133 :: 		CMCON = 0xCF;     // Set Comparator Disabled
	MOVLW       207
	MOVWF       CMCON+0 
;tricopter.c,135 :: 		Soft_UART_Init(&PORTB, 6, 7, 38400, 0);
	MOVLW       PORTB+0
	MOVWF       FARG_Soft_UART_Init_port+0 
	MOVLW       hi_addr(PORTB+0)
	MOVWF       FARG_Soft_UART_Init_port+1 
	MOVLW       6
	MOVWF       FARG_Soft_UART_Init_rx_pin+0 
	MOVLW       7
	MOVWF       FARG_Soft_UART_Init_tx_pin+0 
	MOVLW       0
	MOVWF       FARG_Soft_UART_Init_baud_rate+0 
	MOVLW       150
	MOVWF       FARG_Soft_UART_Init_baud_rate+1 
	MOVLW       0
	MOVWF       FARG_Soft_UART_Init_baud_rate+2 
	MOVWF       FARG_Soft_UART_Init_baud_rate+3 
	CLRF        FARG_Soft_UART_Init_inverted+0 
	CALL        _Soft_UART_Init+0, 0
;tricopter.c,136 :: 		I2C1_Init(400000);
	MOVLW       30
	MOVWF       SSPADD+0 
	CALL        _I2C1_Init+0, 0
;tricopter.c,137 :: 		Delay_ms(500);
	MOVLW       31
	MOVWF       R11, 0
	MOVLW       113
	MOVWF       R12, 0
	MOVLW       30
	MOVWF       R13, 0
L_main15:
	DECFSZ      R13, 1, 1
	BRA         L_main15
	DECFSZ      R12, 1, 1
	BRA         L_main15
	DECFSZ      R11, 1, 1
	BRA         L_main15
	NOP
;tricopter.c,139 :: 		ADXL345_Wr(0x2C, 0x0B);      // 200Hz conversion data rate
	MOVLW       44
	MOVWF       FARG_ADXL345_Wr_address+0 
	MOVLW       11
	MOVWF       FARG_ADXL345_Wr_in+0 
	CALL        _ADXL345_Wr+0, 0
;tricopter.c,140 :: 		ADXL345_Wr(0x2D, 0x08);      // Measuring activated ;)
	MOVLW       45
	MOVWF       FARG_ADXL345_Wr_address+0 
	MOVLW       8
	MOVWF       FARG_ADXL345_Wr_in+0 
	CALL        _ADXL345_Wr+0, 0
;tricopter.c,141 :: 		ADXL345_Wr(0x31, 0x0B);      // Resolution set to +/- 16g (WOW!)
	MOVLW       49
	MOVWF       FARG_ADXL345_Wr_address+0 
	MOVLW       11
	MOVWF       FARG_ADXL345_Wr_in+0 
	CALL        _ADXL345_Wr+0, 0
;tricopter.c,142 :: 		Delay_ms(500);
	MOVLW       31
	MOVWF       R11, 0
	MOVLW       113
	MOVWF       R12, 0
	MOVLW       30
	MOVWF       R13, 0
L_main16:
	DECFSZ      R13, 1, 1
	BRA         L_main16
	DECFSZ      R12, 1, 1
	BRA         L_main16
	DECFSZ      R11, 1, 1
	BRA         L_main16
	NOP
;tricopter.c,144 :: 		dataArrayInit(&acc_x, &acc_y, &acc_z);
	MOVLW       main_acc_x_L0+0
	MOVWF       FARG_dataArrayInit_fifox+0 
	MOVLW       hi_addr(main_acc_x_L0+0)
	MOVWF       FARG_dataArrayInit_fifox+1 
	MOVLW       main_acc_y_L0+0
	MOVWF       FARG_dataArrayInit_fifoy+0 
	MOVLW       hi_addr(main_acc_y_L0+0)
	MOVWF       FARG_dataArrayInit_fifoy+1 
	MOVLW       main_acc_z_L0+0
	MOVWF       FARG_dataArrayInit_fifoz+0 
	MOVLW       hi_addr(main_acc_z_L0+0)
	MOVWF       FARG_dataArrayInit_fifoz+1 
	CALL        _dataArrayInit+0, 0
;tricopter.c,146 :: 		while (1) {
L_main17:
;tricopter.c,147 :: 		LED = !LED;
	BTG         PORTC+0, 2 
;tricopter.c,149 :: 		dataArrayUpdate(&acc_x, &acc_y, &acc_z);
	MOVLW       main_acc_x_L0+0
	MOVWF       FARG_dataArrayUpdate_fifox+0 
	MOVLW       hi_addr(main_acc_x_L0+0)
	MOVWF       FARG_dataArrayUpdate_fifox+1 
	MOVLW       main_acc_y_L0+0
	MOVWF       FARG_dataArrayUpdate_fifoy+0 
	MOVLW       hi_addr(main_acc_y_L0+0)
	MOVWF       FARG_dataArrayUpdate_fifoy+1 
	MOVLW       main_acc_z_L0+0
	MOVWF       FARG_dataArrayUpdate_fifoz+0 
	MOVLW       hi_addr(main_acc_z_L0+0)
	MOVWF       FARG_dataArrayUpdate_fifoz+1 
	CALL        _dataArrayUpdate+0, 0
;tricopter.c,151 :: 		IntToStr(dataArrayFilter(&acc_x), x_string);
	MOVLW       main_acc_x_L0+0
	MOVWF       FARG_dataArrayFilter_fifo+0 
	MOVLW       hi_addr(main_acc_x_L0+0)
	MOVWF       FARG_dataArrayFilter_fifo+1 
	CALL        _dataArrayFilter+0, 0
	MOVF        R0, 0 
	MOVWF       FARG_IntToStr_input+0 
	MOVF        R1, 0 
	MOVWF       FARG_IntToStr_input+1 
	MOVLW       main_x_string_L0+0
	MOVWF       FARG_IntToStr_output+0 
	MOVLW       hi_addr(main_x_string_L0+0)
	MOVWF       FARG_IntToStr_output+1 
	CALL        _IntToStr+0, 0
;tricopter.c,152 :: 		IntToStr(dataArrayFilter(&acc_y), y_string);
	MOVLW       main_acc_y_L0+0
	MOVWF       FARG_dataArrayFilter_fifo+0 
	MOVLW       hi_addr(main_acc_y_L0+0)
	MOVWF       FARG_dataArrayFilter_fifo+1 
	CALL        _dataArrayFilter+0, 0
	MOVF        R0, 0 
	MOVWF       FARG_IntToStr_input+0 
	MOVF        R1, 0 
	MOVWF       FARG_IntToStr_input+1 
	MOVLW       main_y_string_L0+0
	MOVWF       FARG_IntToStr_output+0 
	MOVLW       hi_addr(main_y_string_L0+0)
	MOVWF       FARG_IntToStr_output+1 
	CALL        _IntToStr+0, 0
;tricopter.c,153 :: 		IntToStr(dataArrayFilter(&acc_z), z_string);
	MOVLW       main_acc_z_L0+0
	MOVWF       FARG_dataArrayFilter_fifo+0 
	MOVLW       hi_addr(main_acc_z_L0+0)
	MOVWF       FARG_dataArrayFilter_fifo+1 
	CALL        _dataArrayFilter+0, 0
	MOVF        R0, 0 
	MOVWF       FARG_IntToStr_input+0 
	MOVF        R1, 0 
	MOVWF       FARG_IntToStr_input+1 
	MOVLW       main_z_string_L0+0
	MOVWF       FARG_IntToStr_output+0 
	MOVLW       hi_addr(main_z_string_L0+0)
	MOVWF       FARG_IntToStr_output+1 
	CALL        _IntToStr+0, 0
;tricopter.c,155 :: 		Soft_UART_Write_Text("X: ");
	MOVLW       ?lstr1_tricopter+0
	MOVWF       FARG_Soft_UART_Write_Text_testo+0 
	MOVLW       hi_addr(?lstr1_tricopter+0)
	MOVWF       FARG_Soft_UART_Write_Text_testo+1 
	CALL        _Soft_UART_Write_Text+0, 0
;tricopter.c,156 :: 		Soft_UART_Write_Text(&x_string);
	MOVLW       main_x_string_L0+0
	MOVWF       FARG_Soft_UART_Write_Text_testo+0 
	MOVLW       hi_addr(main_x_string_L0+0)
	MOVWF       FARG_Soft_UART_Write_Text_testo+1 
	CALL        _Soft_UART_Write_Text+0, 0
;tricopter.c,157 :: 		Soft_UART_Write_Text(" - Y: ");
	MOVLW       ?lstr2_tricopter+0
	MOVWF       FARG_Soft_UART_Write_Text_testo+0 
	MOVLW       hi_addr(?lstr2_tricopter+0)
	MOVWF       FARG_Soft_UART_Write_Text_testo+1 
	CALL        _Soft_UART_Write_Text+0, 0
;tricopter.c,158 :: 		Soft_UART_Write_Text(&y_string);
	MOVLW       main_y_string_L0+0
	MOVWF       FARG_Soft_UART_Write_Text_testo+0 
	MOVLW       hi_addr(main_y_string_L0+0)
	MOVWF       FARG_Soft_UART_Write_Text_testo+1 
	CALL        _Soft_UART_Write_Text+0, 0
;tricopter.c,159 :: 		Soft_UART_Write_Text(" - Z: ");
	MOVLW       ?lstr3_tricopter+0
	MOVWF       FARG_Soft_UART_Write_Text_testo+0 
	MOVLW       hi_addr(?lstr3_tricopter+0)
	MOVWF       FARG_Soft_UART_Write_Text_testo+1 
	CALL        _Soft_UART_Write_Text+0, 0
;tricopter.c,160 :: 		Soft_UART_Write_Text(&z_string);
	MOVLW       main_z_string_L0+0
	MOVWF       FARG_Soft_UART_Write_Text_testo+0 
	MOVLW       hi_addr(main_z_string_L0+0)
	MOVWF       FARG_Soft_UART_Write_Text_testo+1 
	CALL        _Soft_UART_Write_Text+0, 0
;tricopter.c,161 :: 		Soft_UART_Write(13);
	MOVLW       13
	MOVWF       FARG_Soft_UART_Write_udata+0 
	CALL        _Soft_UART_Write+0, 0
;tricopter.c,162 :: 		Soft_UART_Write(10);
	MOVLW       10
	MOVWF       FARG_Soft_UART_Write_udata+0 
	CALL        _Soft_UART_Write+0, 0
;tricopter.c,164 :: 		Delay_ms(50);
	MOVLW       4
	MOVWF       R11, 0
	MOVLW       12
	MOVWF       R12, 0
	MOVLW       51
	MOVWF       R13, 0
L_main19:
	DECFSZ      R13, 1, 1
	BRA         L_main19
	DECFSZ      R12, 1, 1
	BRA         L_main19
	DECFSZ      R11, 1, 1
	BRA         L_main19
	NOP
	NOP
;tricopter.c,165 :: 		}
	GOTO        L_main17
;tricopter.c,168 :: 		}
	GOTO        $+0
; end of _main
